<html>
<head>
  <title>Priklady k fja aplikaci</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta name="Author" content="Bronislav Houdek">
  <link rel="stylesheet" type="text/css" href="/fja/css/help.css">
</head>
<body>
<a name="dfa"><h1>Deterministicky konecny automat - DFA</h1></a>
<p>
  nad {a,b,c} akceptujici jazyk
  ((aaa)+(bbb)+(ccc))^+
</p>
<pre class="example">
<span class="note"> //init neni povinne pokud je pocatecni stav uveden jako prvni</span>
init=Q
(Q,a)=A (Q,b)=B (Q,c)=C
(A,a)=AA (B,b)=BB (C,c)=CC
(AA,a)=3ABC (BB,b)=3ABC (CC,c)=3ABC
(3ABC,a)=A (3ABC,b)=B (3ABC,c)=C
F={3ABC}
<span class="note"> //definice finalnich stavu, neni povinna - pak je jazyk akceptovany automatem prazdny</span>
<span class="note"> //neni podminkou psat velka pismena pro stavy a mala pismena pro vst.znaky</span>
</pre>

<a name="nfa"><h1>NFA - Nedeterministicky konecny automat bez epsilon kroku</h1></a>
<p>
  nad {a,b} akceptujici jazyk
  (a+b)*ab.(a+b)* - vsechna slova obsahujici retezec ab
</p>
<pre class="example">
<span class="note"> //neni povinne pokud je pocatecni stav jako prvni</span>
init=Q
(Q,a)={Q,A} (Q,b)={Q}
(A,b)={B}
(B,a)={B} (B,b)={B}
F={B}
<span class="note"> //definice finalnich stavu, neni povinna - pak je jazyk akceptovany automatem prazdny</span>
<span class="note"> //neni podminkou psat velka pismena pro stavy a mala pismena pro vst.znaky</span>
<span class="note"> //+ je normalni znak - pouze (){},\= a mezera se musi uvest \</span>
</pre>
    
<a name="efa"><h1>EFA - Nedeterministicky konecny automat s epsilon kroky</h1></a>
<p>
  nad {a,b,c} akceptujici sjednoceni jazyku
  (a+b)*.b.(b+c)* a (a)*.(c)*
</p>
<pre class="example">
<span class="note"> //init neni povinne pokud je pocatecni stav uveden jako prvni</span>
init=Q
(Q,\e)={A+B} (Q,\e)={A}
(A+B,a)={A+B} (A+B,b)={A+B,B+C}
(B+C,b)={B+C} (B+C,c)={B+C}
(A,a)={A} (A,\e)={C}
(C,c)={C}
F={B+C,C} 
<span class="note"> //definice finalnich stavu, neni povinna - pak je jazyk akceptovany automatem prazdny</span>
<span class="note"> //neni podminkou psat velka pismena pro stavy a mala pismena pro vst.znaky</span>
<span class="note"> //+ je normalni znak - pouze (){},\= a mezera se musi uvest \</span>
</pre>

<a name="gra"><h1>GRA - Regularni gramatika</h1></a>
<p>
  nad {a,b,c} akceptujici jazyk vsech slov s minimalne jednim znakem a
  se sudym poctem znaku b a sudym poctem znaku c
</p>
<pre class="example">
<span class="note"> //Jako pocatecni neterminal se bere vzdy prvni neterminal co se objevi</span>
S-&gt; aS | bB | cC | a
B-&gt; bS | aB | c&lt;BC&gt; | b , C-&gt; aC | b&lt;BC&gt; | cS | c
&lt;BC&gt;-&gt; a&lt;BC&gt; | bC | cB
<span class="note"> // pokud chceme uvest delsi nazev neterminalu tak jej musime uzavrit do &lt;&gt;</span>
</pre>

</body>
</html>
